iT邦幫忙

2

【學習筆記】Git 還原: reset、checkout

  • 分享至 

  • xImage
  •  

最近正在學習git,想要透過把學到的東西寫下來,來記錄一下自己學到的東西,也方便以後回顧這些知識。
剛開始寫這種類似技術性的文章,可能有很多地方寫得不好,還請高手們不吝指教。


在修改檔案的時候可能常常會有已經暫存、提交的檔案,因為種種緣故,又要再重新拿回來修,又或者是推錯檔案等等,這時候就很需要git的回復功能。
只要檔案有加入過commit,那檔案都能被還原。

從暫存(stage)中取消

要取消暫存,需要使用git reset的指令。
比如說,有一個A.html被我git add到stage了,我想要將他退回,那我需要在終端機輸入git reset -- <檔案名稱>,這裡的狀況檔案名稱就是A.html,使用這個指令後,A.html就會從stage中被退回,回到「已修改,但尚未被git追蹤」的狀態,可以用git status查看狀態。
如果要一次將所有stage的檔案退回,可以用git reset .

捨棄變更

如果檔案已經修改,但是後來發現還是以前好,想要捨棄變更時,可以使用git checkout -- <檔案名稱>。使用這個指令就像遊戲中讀取上一個存檔點,會將進度回復到上次儲存的地方一樣,檔案會回復成上次commit的狀態。

取消commit

如果已經將檔案commit上去,但是後來想想還是回復上一個版本好了,那就可以使用git reset HEAD^git reset HEAD~1,兩個功能是一樣的,都代表要將commit的版本回復到前一個版本。使用後,原本commit上去的版本會退回到工作資料夾待處理。此時,用git log看提交紀錄,也會發現這次的提交紀錄不見了。

如果連退回的檔案都不需要的話,那可以使用git reset HEAD^ --hard--hard代表在還原過程中,要把檔案捨棄。

如果要回復到上上個、上上上個...好幾個版本以前的話,可以在HEAD後面處理。例如說,要到上上個版本,輸入git reset HEAD^^^^就是兩個版本以前的意思。或著也可以輸入git reset HEAD~2git reset HEAD^2,波浪符、^後面的數字是要回復到幾個版本以前的意思。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言